This invention relates in general to automated processing of multiple items of data and, more particularly, to a method and apparatus which facilitate manipulation of data during such automated data processing.
There are a variety of situations in which automated processing of a number of data items is desirable. One specific example of such an application is product catalogs. Product catalogs, whether in the form of a paper catalog or an Internet xe2x80x9cWebxe2x80x9d site, frequently have numerous pictures which each depict a respective one of the various items that are available for sale. Many years ago, these pictures were prepared using optical negatives and photographs. Currently, however, the trend is to maintain and process these pictures in the form of computer files containing digital images.
A given paper or on-line catalog will usually include products from a variety of different manufacturers, and it is common for each manufacturer to provide its own digital images. There will typically be variation between the form of images provided by different manufacturers, for example in terms of characteristics such as the size, shape, resolution, tint, and so forth. It is even possible that the images from a single given manufacturer may have different forms. Accordingly, in order for the images throughout a catalog to have a generally similar appearance, the various images from various sources need to be processed to adjust characteristics such as size, shape, resolution, and/or tint, so as to bring them into general conformity with each other.
A further consideration is that a manufacturer""s images do not represent a static situation, because manufacturers are constantly adding new products with new images, discontinuing existing products and associated images, and providing updated images for existing products. Moreover, there may be other reasons for adjusting images. For example, with respect to a paper or on-line catalog intended for use during the Christmas season, there may be a desire to put a festive frame around each image, such as a frame of holly leaves and berries. Moreover, stylistic changes in the images are often desirable.
The traditional approach for carrying out these various types of image processing tasks has involved manual adjustments effected on an image-by-image basis, through use of image processing software requiring extensive operator interaction. However, this is extremely time consuming and expensive. Many organizations currently employ a number of graphic artists to do this work, at great expense.
A less common approach has been the preparation of a hard-coded software routine to process images, written in line-by-line source code. However, these routines are time-consuming and expensive to generate, are likely to include errors or xe2x80x9cbugsxe2x80x9d, and have little flexibility because they cannot be modified quickly and cheaply. Moreover, they can only be prepared and executed by a skilled programmer, rather than by a graphic artist who is skilled in image processing but has limited computer skills. It is difficult to find persons who have both artistic and computer skills, and they command large salaries.
Thus, while these traditional approaches have been generally adequate for their intended purposes, they have not been satisfactory in all respects. In this regard, there are certain types of data manipulation which may be desirable, but which become relatively complex to automate in the form of hard-coded source code. For example, it is not unusual for image data to include multiple layers of image information, as well as other types of information such as text. Splitting this information into its component parts can involve some relatively complex hard-coded source code. As another example, a given task may involve the creation of an image with multiple layers of information, each obtained from a different source. Relatively sophisticated skills are required to prepare hard-coded source code that achieves this result.
In each case, automation of these functions through use of traditional techniques involves the use of skills which are well beyond the capabilities of persons with limited computer expertise. Further, even as to programmers who have strong computer skills, the required routines are sufficiently sophisticated that they are time consuming and expensive to develop, and involve a reasonably high likelihood of inadvertent errors that can lead to incorrect processing of data.
From the foregoing, it may be appreciated that a need has arisen for a method and apparatus which facilitate manipulation of data during automated data processing, and which are adapted for simple and efficient use by persons with limited computer skills. According to the present invention, a method and apparatus are provided to address this need.
In particular, one form of the present invention involves providing a set of predetermined function definitions which are different, and preparing a project definition. The project definition includes a plurality of function portions which each correspond to one of the function definitions in the set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition, one of the function portions being operative in response to the corresponding function definition to accept a data segment at the input port thereof, to split the data segment into component parts, and to output at the output port thereof one of the component parts. The project definition also has a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination. The project definition also has binding information which includes binding portions that each associate a respective input port with one of the output ports.
Another form of the present invention involves providing a set of predetermined function definitions which are different, and preparing a project definition. The project definition includes a plurality of function portions which each correspond to one of the function definitions in the set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition, one of the function portions being operative in response to the corresponding function definition to accept a first data segment at the input port thereof, and to merge the first data segment with a second data segment in order to produce a merged data segment which is supplied to the output port thereof. The project definition also has a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination. The project definition further has binding information which includes binding portions that each associate a respective input port with one of the output ports.